package com.hst.capacity.application.biz;

import com.hst.capacity.domain.model.entity.order.pool.OrderPoolEntity;
import com.hst.capacity.domain.model.request.OrderParam;
import com.hst.capacity.domain.model.request.dispatch.DispatchDriverParam;
import com.hst.capacity.domain.model.request.dispatch.DispatchParam;
import com.hst.capacity.domain.model.request.dispatcher.DispatcherSearchOrderParam;
import com.hst.capacity.domain.model.request.express.ExListNewParam;
import com.hst.capacity.domain.model.request.intercity.IcListParam;
import com.hst.capacity.domain.model.request.orderpool.OrderPoolAiParam;
import com.hst.capacity.domain.model.request.orderpool.OrderPoolParam;
import com.hst.capacity.domain.model.request.price.OrderPoolPriceParam;
import com.hst.capacity.domain.model.request.specialcar.SpCarSettlementViewListParam;
import com.hst.capacity.domain.model.request.specialcar.SpListParam;
import com.hst.capacity.domain.model.request.specialcar.SpOrderDestroyParam;
import com.hst.capacity.domain.model.response.DefaultVO;
import com.hst.capacity.domain.model.response.PagingResultVO;
import com.hst.capacity.domain.model.response.express.ExListNewVO;
import com.hst.capacity.domain.model.response.intercity.IcSearchVO;
import com.hst.capacity.domain.model.response.order.OrderBillInfoVO;
import com.hst.capacity.domain.model.response.order.OrderPoolVO;
import com.hst.capacity.domain.model.response.order.OrderPriceVO;
import com.hst.capacity.domain.model.response.order.OrderVO;
import com.hst.capacity.domain.model.response.setting.RouteVO;
import com.hst.capacity.domain.model.response.specialcar.SpDetailVO;
import com.hst.capacity.domain.model.response.specialcar.SpSettlementViewVO;

public interface OrderPoolBiz {

//    RouteVO calOrderDistance(int coordinateType, String origins, String destinations);
    OrderVO refresh(OrderParam param);

    OrderPriceVO getOrderPrice(OrderPoolPriceParam param);
    OrderPriceVO newOrderPoolPrice(OrderPoolPriceParam param, boolean isOrder);
    OrderPriceVO orderPoolCommonPrice(OrderPoolPriceParam param, boolean isOrder);

    OrderPoolEntity savePoolOrder(OrderPoolParam param);
    OrderPoolEntity createAiPoolOrder(OrderPoolAiParam param);
    OrderPoolEntity createPoolOrder(OrderPoolParam param);
    OrderPoolEntity createNewPoolOrder(OrderPoolParam param);
    OrderPoolEntity createPoolCommonOrder(OrderPoolParam param);
    OrderPoolEntity updatePoolOrder(OrderPoolParam param);

    void userCancelPoolOrder(String idOrder, String reason);
    void cancelPoolOrder(String idOrder);

    OrderVO virtualAcceptOrder(String idOrder, String idDriver);
    OrderVO virtualAcceptOrder(DispatchParam param);

    PagingResultVO<OrderPoolVO> getNewOrderListByRegionCode(SpListParam param);

    Object search(SpListParam param);

    PagingResultVO<OrderPoolVO> orderSearch(SpListParam param, Boolean forHistory);

    PagingResultVO<OrderPoolVO> getTodayOrderList(SpListParam param);

    Boolean dispatchDriver(DispatchDriverParam param);

    Boolean reDispatchDriver(DispatchDriverParam param);

    OrderPoolVO orderPoolInfo(String idOrder);

    SpDetailVO spOrderDetail(String idOrder);

    Boolean spOrderDestroy(SpOrderDestroyParam param);

    Boolean spReMemo(String idOrder, String memo);

    OrderBillInfoVO getOrderBillInfo(String idOrder);

    PagingResultVO<SpSettlementViewVO> spCarOrderBillViewLst(SpCarSettlementViewListParam param);

    PagingResultVO<OrderPoolVO> dispatherOrderPoolSearch(DispatcherSearchOrderParam param, Boolean forHistory);

}
